import axios from 'axios'
import vm from '@/main.js'
import {serverUrlNumberPork} from "./api"
import {FormatJWT} from "./CalebbJWT.1.js"

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
　　// 在发送请求之前做些什么
    if (localStorage.token) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
        let tokenObj = JSON.parse(localStorage.tokenObj);
        // console.log(tokenObj.expires_in);
        config.headers.Authorization = "Bearer "+localStorage.token;
        // let nowTime = 10;   //当前时间
        // let tokenTime = 11; //token时间
        // let refreshTime = 20    //刷新token时间

        let nowTime = Math.round(new Date() / 1000); //当前时间
        let tokenTime = JSON.parse(FormatJWT(localStorage.token)); //token时间
        let refreshTime = JSON.parse(FormatJWT(localStorage.refresh_token)); //refreshTime时间
        // console.log(tokenTime);
        tokenTime = tokenTime.exp;
        refreshTime = refreshTime.exp;
        // console.log(tokenObj);
        // console.log(tokenTime);
        // console.log(refreshTime);
        //判断token过期时间
        if(tokenTime > nowTime || tokenTime === undefined) {
            //什么都不做
            // console.log("tokenTime 没有过期")
        }else{
            //判断refreshTime过期时间
            if(refreshTime > nowTime){
                //发送请求刷新token
                console.log("发送请求刷新token");
                vm.$jq.ajax({
                    type: 'post',
                    // url: 'http://192.168.0.233:8784'+'/uaa/oauth/token',
                    url: serverUrlNumberPork + '/uaa/oauth/token',
                    headers: {
                        "Content-Type":"multipart/form-data",
                        // 'Authorization': 'Basic '+ 'd2ViOnBpZw=='
                    },
                    data: {
                        grant_type: "refresh_token",
                        refresh_token: localStorage.refresh_token,
                    },
                    success: function(res){
                        localStorage.tokenObj = JSON.stringify(res);
                        localStorage.token = res.access_token;
                        localStorage.refresh_token = res.refresh_token;
                    },
                    error: function(res){
                        console.log(res.status);
                        //直接跳到首页
                        vm.$store.commit('logout', vm);
                        vm.$store.commit('clearOpenedSubmenu');
                        vm.$router.push({
                            name: 'login'
                        });
                        vm.$message({
                            message: '时间过期了，请重新登录',
                            type: 'warning',
                            duration: '2000',
                            center: true,
                        });
                    }
                });
            }else{
                //直接跳到首页
                vm.$store.commit('logout', vm);
                vm.$store.commit('clearOpenedSubmenu');
                vm.$router.push({
                    name: 'login'
                });
                vm.$message({
                    message: '时间过期了，请重新登录',
                    type: 'warning',
                    duration: '2000',
                    center: true,
                });
            }
        }
    }
　　return config
}, function (error) {
　　// 对请求错误做些什么
return Promise.reject(error)
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
　　// 对响应数据做点什么
　　return response
}, function (error) {
　　// 对响应错误做点什么
　　return Promise.reject(error)
});

export default axios